package cn.dengta.webapp.trade.entity;

import javax.validation.constraints.NotNull;

import cn.dengta.common.model.*;
import cn.dengta.webapp.base.entity.TimeBasedEntity;
import cn.dengta.webapp.trade.model.PayPlatform;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;
import me.codeplayer.util.Cmp;

/**
 * 充值渠道配置
 */
@Setter
@Getter
@Accessors(chain = true)
@TableName("tr_pay_channel_config")
public class PayChannelConfig extends TimeBasedEntity {

	/** 商户平台开发者账户 */
	private String appId;
	/** 商户证书序列号（微信独有） */
	private String merchantSerialNo;
	/** 商户id（微信独有） */
	private String merchantId;
	/** apiv3key（微信独有） */
	private String apiV3Key;
	/** 支付公钥根证书（文件base64） */
	private String alipayRootCertPath;
	/** 支付宝公钥证书（文件base64） */
	private String alipayCertPath;
	/** 商户证书（文件base64） */
	private String merchantCertPath;
	/** 商户私钥key */
	private String merchantPrivateKey;
	/** 商户公钥Key */
	private String merchantPublicKey;
	/** 商户平台类型 1-支付宝 2-微信 3-银行卡 */
	private Integer platform;
	/** 商户平台名称 */
	private String name;
	/** 别名 */
	private String aliasName;
	/** 状态 0-关闭 1-正常 2-删除 */
	private Integer status;
	/** 支持的马甲包 {@link cn.dengta.context.model.WesKit} */
	private String wesKits;
	/** 支持的公众号 */
	private String wxOaIds;
	/** 微信小程序ID（GeeWallet支付独有） */
	private String miniAppId;
	/** 微信小程序密钥（GeeWallet支付独有） */
	private String miniAppSecret;
	/** 微信小程序原始ID（GeeWallet支付独有） */
	private String miniOriginalId;
	/** 微信小程序调整路径（GeeWallet支付独有） */
	private String miniPath;
	/** 终端号(宝付独有) */
	// private String bfTerminalNo;
	/** 商户私钥(宝付独有) */
	// private String bfPfxPath;
	/** 商户密码(宝付独有) */
	// private String bfPfxPwd;
	/** 宝付公钥(宝付独有) */
	// private String bfCerPath;
	//private String apiKey;

	@TableField(exist = false)
	//private String wesKitsQuery;
	/** 限时启用：1=限时启用；0=全量启用 */
	//private Integer limitTimeEnabled;

	transient PayPlatform payPlatform;

	/** 是否可用 */
	public boolean canStatus() {
		return Cmp.eq(this.status, Status.YES.value);
	}



	public PayPlatform getPayPlatform() {
		if (payPlatform == null) {
			payPlatform = PayPlatform.of(this.platform);
		}
		return payPlatform;
	}



	public String getAlias() {
		return appId + "_" + id;
	}

	public static final String APP_ID = "app_id";
	public static final String STATUS = "status";
	public static final String FLAG = "flag";
	public static final String SOURCE = "source";
	public static final String ALIAS_NAME = "alias_name";
	public static final String WX_OA_IDS = "wx_oa_ids";
	public static final String WES_KITS = "wes_kits";
	public static final String NAME = "name";
	public static final String LIMIT_TIME_ENABLED = "limit_time_enabled";
	public static final String PLATFORM = "platform";

}
